// 导入数据库操作模块
const db = require('../db/index')

const jwt = require('jsonwebtoken')
    // 导入配置文件
const config = require('../config')

// 导入定义验证规则的模块
const joi = require('joi')

// 定义 分类名称 和 分类别名 的校验规则
const userID = joi.number().integer().min(1).max(10).required()
const password = joi.string().pattern(/^[\S]{6,12}$/).required()

// 校验规则对象 - 添加分类
exports.add_user_schema = {
    body: {
        userID,
        password,
    },
}

exports.users = (req, res) => {
    const sql = `select * from tp_user order by userID asc`
    db.query(sql, (err, results) => {
        // 1. 执行 SQL 语句失败
        if (err) return res.er(err.message)
        res.send({
            status: 0,
            message: '获取用户信息成功！',
            data: results,
            total: results.length,
            pagenum: 1
        })
    })
}

exports.adduser = (req, res) => {
    const sqlStr = `select * from tp_user where userID=?`
    const userinfo = req.body
        // 对表单中的数据进行合法性的校验
    if (!userinfo.userID || !userinfo.password) {
        return res.er('用户名或密码不合法')
    }
    db.query(sqlStr, [userinfo.userID], (err, result) => {
        if (err) {
            return res.er(err)
        }
        // 判断用户名是否被占用
        if (result.length > 0) {
            return res.er('用户ID已被占用')
        }
        const sql = 'insert into tp_user set ?;'
        db.query(sql, { userID: userinfo.userID, password: userinfo.password, name: userinfo.name, sex: userinfo.sex, identity: userinfo.identity }, (err, result) => {
            if (err) {
                return res.er(err.message)
            }
            if (result.affectedRows !== 1) {
                return res.er('添加用户失败')
            }
            res.er('添加成功', 0)
        })
    })
}

exports.edituser = (req, res) => {
    const sql = `update tp_user set? where userID=?`
    db.query(sql, [req.body, req.body.userID], (err, results) => {
        if (err) {
            return res.er(err.message)
        }
        if (results.affectedRows !== 1) return res.er('编辑用户信息失败！')
        res.er('编辑成功', 0)
    })
}

exports.deluser = (req, res) => {
    const sql = `delete from tp_user where userID = ?`
    db.query(sql, req.params.id, (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.er(err.message)

        // SQL 语句执行成功，但是影响行数不等于 1
        if (results.affectedRows !== 1) return res.er('删除失败！')

        res.er('删除成功！', 0)
    })
}

exports.searchuser = (req, res) => {
    const sql = `select * from tp_user where userID=? `
    db.query(sql, req.params.id, (err, results) => {
        if (err) return res.er(err.message)
        res.send({
            status: 0,
            message: '查询用户信息成功！',
            data: results,
            total: results.length,
            pagenum: 1
        })
    })
}